In the world of computer programming, object models are application programming interfaces (APIs) and/or classes that are used to represent specific types of information relating to some problem domain. Multiple object models frequently refer to the same domain of conceptual entity using their own internal representation. Individual object models are typically designed to facilitate some particular style of data access or algorithmic processing. Take, for example, a method object called “Method A” that represents a specific function in some computer program. There might be a performance analysis tool that stores performance data over a period of time for a certain method object called “Method A”. There might be a debugger that also stores debugging information for a method object called “Method A”. There might also be source code written using a software development program that contains the actual implementation for “Method A”. Each program uses its own model-specific object instances for referring to the same conceptual entity called “Method A”.
A problem arises when a process wants to correlate the different objects corresponding to “Method A” in a meaningful fashion. One approach that is sometimes taken is to independently recognize that they are referring to the same conceptual entity by invoking model-dependent application programming interfaces to retrieve the entities using model-dependent data extracted from the other model. For example, suppose that a debugger wants to use performance analysis data for a comparison. The debugger could ask the performance analysis tool for the data. The performance analysis tool would then analyze the performance record from the performance model, extract a method signature, recompose the method signature into a format that is acceptable to the debugger, and pass that information to the debugger. This solution is tedious and also only works if the object models make the data public and provide mechanisms for the entity data to actually be requested. When the data is actually private, or the object model does not expose a way of accessing that data, a client may not be able to correlate these models at all.